package com.ds.infra.rpc.example.api;


import com.ds.infra.rpc.example.api.dto.ProductDTO;
import com.ds.infra.rpc.example.api.exception.ApiException;

import java.util.List;

/**
 * 商品服务接口
 */
public interface ProductService {

    /**
     * 根据ID获取商品详情
     */
    ProductDTO getProductById(Long id) throws ApiException;

    /**
     * 获取所有商品列表
     */
    List<ProductDTO> getAllProducts() throws ApiException;

    /**
     * 扣减商品库存
     *
     * @param productId 商品ID
     * @param quantity  扣减数量
     * @return 扣减是否成功
     */
    boolean reduceStock(Long productId, int quantity) throws ApiException;

    /**
     * 批量查询商品信息
     */
    List<ProductDTO> batchQueryProducts(List<Long> productIds) throws ApiException;
}
